package com.elean.pms.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
import java.util.HashMap;
import java.util.Map;


public class BaseController {

    private Map<String, Object> jsonMap = new HashMap();
    protected HttpServletRequest request;
    protected HttpServletResponse response;
    protected HttpSession session;

//	protected User getCurrentUser(){
//		User u = null;
//		ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        HttpServletRequest request = requestAttributes.getRequest();
//        HttpSession session = request.getSession();
//        u = (User) session.getAttribute("user");
//        return u;
//	}

    public String getPara(String name) {
        return this.getPara(name, "");
    }

    public String getPara(String name, String defaultValue) {
        String result = this.request.getParameter(name);
        return result != null && !"".equals(result) ? result : defaultValue;
    }

    public Integer getParaToInt(String name) {
        return this.toInt(this.request.getParameter(name), (Integer)null);
    }

    public Integer getParaToInt(String name, Integer defaultValue) {
        return this.toInt(this.request.getParameter(name), defaultValue);
    }

    private Integer toInt(String value, Integer defaultValue) {
        try {
            if (value != null && !"".equals(value.trim())) {
                value = value.trim();
                return !value.startsWith("N") && !value.startsWith("n") ? Integer.parseInt(value) : -Integer.parseInt(value.substring(1));
            } else {
                return defaultValue;
            }
        } catch (Exception var4) {
            throw new RuntimeException("Can not parse the parameter \"" + value + "\" to Integer value.");
        }
    }

    public Long getParaToLong(String name) {
        return this.toLong(this.request.getParameter(name), (Long)null);
    }

    private Long toLong(String value, Long defaultValue) {
        try {
            if (value != null && !"".equals(value.trim())) {
                value = value.trim();
                return !value.startsWith("N") && !value.startsWith("n") ? Long.parseLong(value) : -Long.parseLong(value.substring(1));
            } else {
                return defaultValue;
            }
        } catch (Exception var4) {
            throw new RuntimeException("Can not parse the parameter \"" + value + "\" to Long value.");
        }
    }



//    @Autowired
//    RedisUtils redisUtil;
//
//    @Value("${web.public.upload-path}")
//    private String uploadPublicPath;
//
//    @Value("${web.private.upload-path}")
//    private String uploadPrivatePath;
//
//    protected User getCurrentUser(){
//        User u = null;
//        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        HttpServletRequest request = requestAttributes.getRequest();
//        String token = request.getHeader(Global.AUTHORIZE_TOKEN);
//        Object obj = redisUtil.get(token);
//        if(obj!=null){
//            u = JsonUtil.string2Obj(JsonUtil.obj2String(obj), User.class);
//        }
//        return u;
//    }
//
//    /**
//     * 上传到公共路径 可直接通过URL访问
//     * @param file
//     * @param path 相对路径
//     * @return 返回相对路径
//     */
//    protected String upLoadPublicFile(MultipartFile file){
//        //获取classpath绝对路径
//        //URL url = Thread.currentThread().getContextClassLoader().getResource("");
//        //生成文件在服务器名称 UUID
//        String newFileName = StringUtils.getUUID();
//
//        String fileName = file.getOriginalFilename();
//        int index = fileName.lastIndexOf(".");
//        if(index>0){
//            String fileType = fileName.substring(index+1);
//            newFileName += "."+fileType;
//        }
//
//        File dest = new File(uploadPublicPath + newFileName);
//        try {
//            if(!dest.getParentFile().exists()){
//                dest.getParentFile().mkdirs();
//            }
//            file.transferTo(dest);
//            return newFileName;
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 上传到私有路径 无法通过URL访问 只能通过IO流的方式提供下载
//     * @param file
//     * @param path
//     * @return 返回文件的绝对路径
//     */
//    protected String upLoadPrivateFile(MultipartFile file){
//        //获取classpath绝对路径
//        //URL url = Thread.currentThread().getContextClassLoader().getResource("");
//        //生成文件在服务器名称 UUID
//        String newFileName = uploadPrivatePath + StringUtils.getUUID();
//        String fileName = file.getOriginalFilename();
//        int index = fileName.lastIndexOf(".");
//        if(index>0){
//            String fileType = fileName.substring(index+1);
//            newFileName += "."+fileType;
//        }
//
//        File dest = new File( newFileName);
//        try {
//            if(!dest.getParentFile().exists()){
//                dest.getParentFile().mkdirs();
//            }
//            file.transferTo(dest);
//
//            return newFileName;
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    public void download(HttpServletRequest request,HttpServletResponse response,String filePath,String fileName) throws IOException
//    {
//        try {
//            request.setCharacterEncoding("UTF-8");
//        } catch (UnsupportedEncodingException e1) {
//            e1.printStackTrace();
//        }
//
//        java.io.BufferedInputStream bis = null;
//        java.io.BufferedOutputStream bos = null;
//
//        String downLoadPath = filePath;  //注意不同系统的分隔符
//        try {
//            long fileLength = new File(downLoadPath).length();
//            response.setContentType("multipart/form-data");
//            response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
//            response.setHeader("Content-Length", String.valueOf(fileLength));
//            bis = new BufferedInputStream(new FileInputStream(downLoadPath));
//            bos = new BufferedOutputStream(response.getOutputStream());
//            byte[] buff = new byte[2048];
//            int bytesRead;
//            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
//                bos.write(buff, 0, bytesRead);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            if (bis != null)
//                try {
//                    bis.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            if (bos != null)
//                try {
//                    bos.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//        }
//    }




}
